Source File
api_op_ListObjectsV2.go
Belonging Package
github.com/aws/aws-sdk-go-v2/service/s3
// Code generated by smithy-go-codegen DO NOT EDIT.
package s3
import (
awsmiddleware
s3cust
smithyhttp
)
// Returns some or all (up to 1,000) of the objects in a bucket with each request.
// You can use the request parameters as selection criteria to return a subset of
// the objects in a bucket. A 200 OK response can contain valid or invalid XML.
// Make sure to design your application to parse the contents of the response and
// handle it appropriately. Objects are returned sorted in an ascending order of
// the respective key names in the list. For more information about listing
// objects, see Listing object keys programmatically
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html)
// To use this operation, you must have READ access to the bucket. To use this
// action in an Identity and Access Management (IAM) policy, you must have
// permissions to perform the s3:ListBucket action. The bucket owner has this
// permission by default and can grant this permission to others. For more
// information about permissions, see Permissions Related to Bucket Subresource
// Operations
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
// and Managing Access Permissions to Your Amazon S3 Resources
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
// This section describes the latest revision of this action. We recommend that you
// use this revised API for application development. For backward compatibility,
// Amazon S3 continues to support the prior version of this API, ListObjects
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html). To get a
// list of your buckets, see ListBuckets
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html). The
// following operations are related to ListObjectsV2:
//
// * GetObject
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
//
// *
// PutObject
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
//
// *
// CreateBucket
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
func ( *Client) ( context.Context, *ListObjectsV2Input, ...func(*Options)) (*ListObjectsV2Output, error) {
if == nil {
= &ListObjectsV2Input{}
}
, , := .invokeOperation(, "ListObjectsV2", , , .addOperationListObjectsV2Middlewares)
if != nil {
return nil,
}
:= .(*ListObjectsV2Output)
.ResultMetadata =
return , nil
}
type ListObjectsV2Input struct {
// Bucket name to list. When using this action with an access point, you must
// direct requests to the access point hostname. The access point hostname takes
// the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When
// using this action with an access point through the Amazon Web Services SDKs, you
// provide the access point ARN in place of the bucket name. For more information
// about access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
// This member is required.
Bucket *string
// ContinuationToken indicates Amazon S3 that the list is being continued on this
// bucket with a token. ContinuationToken is obfuscated and is not a real key.
ContinuationToken *string
// A delimiter is a character you use to group keys.
Delimiter *string
// Encoding type used by Amazon S3 to encode object keys in the response.
EncodingType types.EncodingType
// The account ID of the expected bucket owner. If the bucket is owned by a
// different account, the request fails with the HTTP status code 403 Forbidden
// (access denied).
ExpectedBucketOwner *string
// The owner field is not present in listV2 by default, if you want to return owner
// field with each key in the result then set the fetch owner field to true.
FetchOwner bool
// Sets the maximum number of keys returned in the response. By default the action
// returns up to 1,000 key names. The response might contain fewer keys but will
// never contain more.
MaxKeys int32
// Limits the response to keys that begin with the specified prefix.
Prefix *string
// Confirms that the requester knows that she or he will be charged for the list
// objects request in V2 style. Bucket owners need not specify this parameter in
// their requests.
RequestPayer types.RequestPayer
// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
// listing after this specified key. StartAfter can be any key in the bucket.
StartAfter *string
noSmithyDocumentSerde
}
type ListObjectsV2Output struct {
// All of the keys (up to 1,000) rolled up into a common prefix count as a single
// return when calculating the number of returns. A response can contain
// CommonPrefixes only if you specify a delimiter. CommonPrefixes contains all (if
// there are any) keys between Prefix and the next occurrence of the string
// specified by a delimiter. CommonPrefixes lists keys that act like subdirectories
// in the directory specified by Prefix. For example, if the prefix is notes/ and
// the delimiter is a slash (/) as in notes/summer/july, the common prefix is
// notes/summer/. All of the keys that roll up into a common prefix count as a
// single return when calculating the number of returns.
CommonPrefixes []types.CommonPrefix
// Metadata about each object returned.
Contents []types.Object
// If ContinuationToken was sent with the request, it is included in the response.
ContinuationToken *string
// Causes keys that contain the same string between the prefix and the first
// occurrence of the delimiter to be rolled up into a single result element in the
// CommonPrefixes collection. These rolled-up keys are not returned elsewhere in
// the response. Each rolled-up result counts as only one return against the
// MaxKeys value.
Delimiter *string
// Encoding type used by Amazon S3 to encode object key names in the XML response.
// If you specify the encoding-type request parameter, Amazon S3 includes this
// element in the response, and returns encoded key name values in the following
// response elements: Delimiter, Prefix, Key, and StartAfter.
EncodingType types.EncodingType
// Set to false if all of the results were returned. Set to true if more keys are
// available to return. If the number of results exceeds that specified by MaxKeys,
// all of the results might not be returned.
IsTruncated bool
// KeyCount is the number of keys returned with this request. KeyCount will always
// be less than or equals to MaxKeys field. Say you ask for 50 keys, your result
// will include less than equals 50 keys
KeyCount int32
// Sets the maximum number of keys returned in the response. By default the action
// returns up to 1,000 key names. The response might contain fewer keys but will
// never contain more.
MaxKeys int32
// The bucket name. When using this action with an access point, you must direct
// requests to the access point hostname. The access point hostname takes the form
// AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this
// action with an access point through the Amazon Web Services SDKs, you provide
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
Name *string
// NextContinuationToken is sent when isTruncated is true, which means there are
// more keys in the bucket that can be listed. The next list requests to Amazon S3
// can be continued with this NextContinuationToken. NextContinuationToken is
// obfuscated and is not a real key
NextContinuationToken *string
// Keys that begin with the indicated prefix.
Prefix *string
// If StartAfter was sent with the request, it is included in the response.
StartAfter *string
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func ( *Client) ( *middleware.Stack, Options) ( error) {
= .Serialize.Add(&awsRestxml_serializeOpListObjectsV2{}, middleware.After)
if != nil {
return
}
= .Deserialize.Add(&awsRestxml_deserializeOpListObjectsV2{}, middleware.After)
if != nil {
return
}
if = addSetLoggerMiddleware(, ); != nil {
return
}
if = awsmiddleware.AddClientRequestIDMiddleware(); != nil {
return
}
if = smithyhttp.AddComputeContentLengthMiddleware(); != nil {
return
}
if = addResolveEndpointMiddleware(, ); != nil {
return
}
if = v4.AddComputePayloadSHA256Middleware(); != nil {
return
}
if = addRetryMiddlewares(, ); != nil {
return
}
if = addHTTPSignerV4Middleware(, ); != nil {
return
}
if = awsmiddleware.AddRawResponseToMetadata(); != nil {
return
}
if = awsmiddleware.AddRecordResponseTiming(); != nil {
return
}
if = addClientUserAgent(); != nil {
return
}
if = smithyhttp.AddErrorCloseResponseBodyMiddleware(); != nil {
return
}
if = smithyhttp.AddCloseResponseBodyMiddleware(); != nil {
return
}
if = swapWithCustomHTTPSignerMiddleware(, ); != nil {
return
}
if = addOpListObjectsV2ValidationMiddleware(); != nil {
return
}
if = .Initialize.Add(newServiceMetadataMiddleware_opListObjectsV2(.Region), middleware.Before); != nil {
return
}
if = addMetadataRetrieverMiddleware(); != nil {
return
}
if = addListObjectsV2UpdateEndpoint(, ); != nil {
return
}
if = addResponseErrorMiddleware(); != nil {
return
}
if = v4.AddContentSHA256HeaderMiddleware(); != nil {
return
}
if = disableAcceptEncodingGzip(); != nil {
return
}
if = addRequestResponseLogging(, ); != nil {
return
}
return nil
}
// ListObjectsV2APIClient is a client that implements the ListObjectsV2 operation.
type ListObjectsV2APIClient interface {
ListObjectsV2(context.Context, *ListObjectsV2Input, ...func(*Options)) (*ListObjectsV2Output, error)
}
var _ ListObjectsV2APIClient = (*Client)(nil)
// ListObjectsV2PaginatorOptions is the paginator options for ListObjectsV2
type ListObjectsV2PaginatorOptions struct {
// Sets the maximum number of keys returned in the response. By default the action
// returns up to 1,000 key names. The response might contain fewer keys but will
// never contain more.
Limit int32
// Set to true if pagination should stop if the service returns a pagination token
// that matches the most recent token provided to the service.
StopOnDuplicateToken bool
}
// ListObjectsV2Paginator is a paginator for ListObjectsV2
type ListObjectsV2Paginator struct {
options ListObjectsV2PaginatorOptions
client ListObjectsV2APIClient
params *ListObjectsV2Input
nextToken *string
firstPage bool
}
// NewListObjectsV2Paginator returns a new ListObjectsV2Paginator
func ( ListObjectsV2APIClient, *ListObjectsV2Input, ...func(*ListObjectsV2PaginatorOptions)) *ListObjectsV2Paginator {
if == nil {
= &ListObjectsV2Input{}
}
:= ListObjectsV2PaginatorOptions{}
if .MaxKeys != 0 {
.Limit = .MaxKeys
}
for , := range {
(&)
}
return &ListObjectsV2Paginator{
options: ,
client: ,
params: ,
firstPage: true,
nextToken: .ContinuationToken,
}
}
// HasMorePages returns a boolean indicating whether more pages are available
func ( *ListObjectsV2Paginator) () bool {
return .firstPage || (.nextToken != nil && len(*.nextToken) != 0)
}
// NextPage retrieves the next ListObjectsV2 page.
func ( *ListObjectsV2Paginator) ( context.Context, ...func(*Options)) (*ListObjectsV2Output, error) {
if !.HasMorePages() {
return nil, fmt.Errorf("no more pages available")
}
:= *.params
.ContinuationToken = .nextToken
.MaxKeys = .options.Limit
, := .client.ListObjectsV2(, &, ...)
if != nil {
return nil,
}
.firstPage = false
:= .nextToken
.nextToken = nil
if .IsTruncated {
.nextToken = .NextContinuationToken
}
if .options.StopOnDuplicateToken &&
!= nil &&
.nextToken != nil &&
* == *.nextToken {
.nextToken = nil
}
return , nil
}
func ( string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: ,
ServiceID: ServiceID,
SigningName: "s3",
OperationName: "ListObjectsV2",
}
}
// getListObjectsV2BucketMember returns a pointer to string denoting a provided
// bucket member valueand a boolean indicating if the input has a modeled bucket
// name,
func ( interface{}) (*string, bool) {
:= .(*ListObjectsV2Input)
if .Bucket == nil {
return nil, false
}
return .Bucket, true
}
func ( *middleware.Stack, Options) error {
return s3cust.UpdateEndpoint(, s3cust.UpdateEndpointOptions{
Accessor: s3cust.UpdateEndpointParameterAccessor{
GetBucketFromInput: getListObjectsV2BucketMember,
},
UsePathStyle: .UsePathStyle,
UseAccelerate: .UseAccelerate,
SupportsAccelerate: true,
TargetS3ObjectLambda: false,
EndpointResolver: .EndpointResolver,
EndpointResolverOptions: .EndpointOptions,
UseARNRegion: .UseARNRegion,
DisableMultiRegionAccessPoints: .DisableMultiRegionAccessPoints,
})
}
The pages are generated with Golds v0.4.9. (GOOS=linux GOARCH=amd64)